package com.bocloud.cmp.interfaces.app.resource;

import java.util.List;
import java.util.Map;

import com.bocloud.cmp.entity.app.resource.Software;
import com.bocloud.common.model.BsmResult;
import com.bocloud.common.model.Param;
import com.bocloud.common.model.RequestUser;

/**
 * 应用镜像service接口
 * 
 * @author zjm
 * @date 2017年3月17日
 * @describe
 */
public interface SoftwareService {

	/**
	 * 列表查询
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param page
	 * @param rows
	 * @param params
	 * @param sorter
	 * @param simple
	 * @return
	 */
	public BsmResult list(int page, int rows, List<Param> params, Map<String, String> sorter, Boolean simple, RequestUser requestUser);

	/**
	 * 添加信息
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param user
	 * @param software
	 * @return
	 */
	public BsmResult create(RequestUser requestUser, Software software);

	/**
	 * 获取详情
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param id
	 * @return
	 */
	public BsmResult detail(Long id, RequestUser user);

	/**
	 * 删除信息
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param ids
	 * @param userId
	 * @return
	 */
	public BsmResult remove(List<Long> ids, Long userId);

	/**
	 * 修改信息
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param software
	 * @param userId
	 * @return
	 */
	public BsmResult modify(Software software, Long userId);

	/**
	 * 导入镜像
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param user
	 * @param registryId
	 * @param fileName
	 * @return
	 */
	public BsmResult imports(RequestUser requestUser, Long registryId, String fileName);

	/**
	 * 获取镜像信息
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param imageId
	 * @return
	 */
	public BsmResult inspect(Long imageId, RequestUser user);

	/**
	 * 删除镜像
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param registryId
	 * @param imageId
	 * @return
	 */
	public BsmResult remove(Long registryId, Long imageId);

	/**
	 * 统计镜像
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @return
	 */
	public BsmResult count(RequestUser requestUser);

	/**
	 * 镜像部署
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param appId
	 * @param imageId
	 * @param clusterId
	 * @param labels
	 * @param envs
	 * @param user
	 * @return
	 */
	public BsmResult deploy(Long appId, Long imageId, Long clusterId, Map<String, String> labels,
			Map<String, String> envs, RequestUser user);
	
	
	/**
	 * 镜像授权
	 * @param imageId
	 * @param deptId
	 * @return
	 */
	public BsmResult authorize(Long imageId, Long userId, Long deptId);

}
